package com.sob.bountyhunter.entidades;

import java.awt.Rectangle;

import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;

import com.sob.bountyhunter.Mapa;

public class Jugador extends Entidad{	
	
	//public Direccion prevDir=Direccion.DIR_ABAJO;
	//public Direccion direccion=Direccion.DIR_ABAJO;
	
	public int prevDir=0, direccion=0;
			
	public Jugador(String sf) throws SlickException 
	{
		super(sf);
		cx=16;
		cy=55;
		tinte=new Color(Color.red);
	}

	/*
	public Jugador(String sf, int sw, int sh, int time) throws SlickException 
	{
		super(sf, sw, sh, time);
		//animacion.setAutoUpdate(false);		
		cx=16;
		cy=24;
		sprSize=2f;
		//filtro=new Color(Color.red);
	}*/
	
	public Jugador() throws SlickException{
		super();
		cx=16;
		cy=24;
		sprSize=2f;
		
	}

	@Override
	public Rectangle getCajaColision()
	{
		Rectangle r=null;
		
		r=new Rectangle( ((int)(x+cx)-16), ((int)(y+cy)-16), 32, 23);
		
		return r;
	}
	@Override
	public Rectangle getCajaColision(float px, float py)
	{
		Rectangle r=null;
		
		r=new Rectangle( ((int)(px+cx)-16), ((int)(py+cy)-16), 32, 23);
		
		return r;
	}
	
	public void update(GameContainer gameContainer, int deltaTime, Mapa map)
	{
		super.update(gameContainer, deltaTime, map);
		
		Input input=gameContainer.getInput();
		
		boolean arriba = input.isKeyDown(Input.KEY_UP);
		boolean abajo = input.isKeyDown(Input.KEY_DOWN);
		boolean izquierda = input.isKeyDown(Input.KEY_LEFT);
		boolean derecha= input.isKeyDown(Input.KEY_RIGHT);

		/*
		if(animacion!=null)
		{
			int trueStep=animFrame%11;
			animacion.setCurrentFrame(trueStep+(direccion*11));
		}
		*/
		prevDir=direccion;
		updateAnim=false;
		
		if(arriba){
			direccion=3;
			updateAnim=true;
			yinc=-(yvel*deltaTime);
		}
		if(abajo){
			direccion=0;
			updateAnim=true;
			yinc=+(yvel*deltaTime);
		}
		if(izquierda){
			direccion=1;
			updateAnim=true;
			//hMirror=false;
			xinc=-(xvel*deltaTime);
		}
		if(derecha){
			direccion=2;
			updateAnim=true;
			//hMirror=true;
			xinc=+(xvel*deltaTime);
		}
		
		//Redice la velocidad al 80% si va en diagonal
		if(xinc!=0 && yinc!=0){
			xinc*=0.8;
			yinc*=0.8;
		}
		
		if(animacion!=null){
			dirAnim=direccion;
			if(!updateAnim){
				animacion[direccion].setCurrentFrame(0);
				//sprite=animacion[dirAnim].getCurrentFrame();
			}
			/*
			if(prevDir!=direccion || (!arriba && !abajo && !izquierda && !derecha)){
				animacion[direccion].setCurrentFrame(0+direccion*11);
			}*/
		}
	}
}
